#pragma once
#include <memory>
#include <vector>
#include <string>
#include <d3d11_1.h>

#include "IComponent.h"
#include "IRenderable.h"
#include "IEffect.h"
#include "Camera.h"
#include "EffectPosition3NormalColor.h"

using namespace std;

class Model : virtual public IComponent, IRenderable
{
public:
	Model(void);
	~Model(void);

	virtual void Initialize(HWND WindowHandle = nullptr, HINSTANCE hInstance = nullptr, ID3D11Device* Device = nullptr, ID3D11DeviceContext* DeviceContext = nullptr);
	virtual void Update(int DeltaTime);
	virtual void Shutdown();
	virtual void Render();

	void NumberOfEffects(int NumberOfEffects);
	void AddVertex(Position3NormalColor Vertex, int MaterialIndex);

	void Create();
	void SetCamera(Camera* cam);

private:
	Camera*	ViewCamera;
	vector<IEffect*> Effects;

	ID3D11Device *D3DDevice;
	ID3D11DeviceContext *D3DDeviceContext;
};

